﻿using JetBrains.Annotations;
#if TASKSUPPORT
using System.Threading.Tasks;
#endif

namespace MugenMvvmToolkit.Interfaces
{
    /// <summary>
    ///     Represents the interface that contains a result of the navigation operation.
    /// </summary>
    public interface INavigationResult
    {
#if TASKSUPPORT
        /// <summary>
        ///     Gets the navigation result task, this task returns the result of the navigation operation.
        /// </summary>
        [NotNull]
        Task<bool> NavigationResultTask { get; }

        /// <summary>
        ///     Gets the navigation result task, this task returns the result of the operation.
        /// </summary>
        [NotNull]
        Task<bool?> OperationResultTask { get; }
#else
        /// <summary>
        ///     Gets the navigation result task, this task returns the result of the navigation operation.
        /// </summary>
        [NotNull]
        IOperationResult<bool> NavigationResultTask { get; }

        /// <summary>
        ///     Gets the navigation result task, this task returns the result of the operation.
        /// </summary>
        [NotNull]
        IOperationResult<bool?> OperationResultTask { get; }
#endif
    }
}